// 获取应用实例
const app = getApp()
// 导入mixin
import { mixin } from "../../utils/mixin"
Page({
  data: {
    // 是否显示倒计时组件
    isShow: false,
    // 手机号
    mobile: '',
    // 验证码
    code: ''
  },
  behaviors: [mixin],
  onLoad(params) {
    // 拿到跳转到登录页的参数  存放到this这个对象上
    this.redirectUrl = params.redirectUrl
  },
  /**
   * 验证手机号格式
   */
  validMobile(mobile) {
    const reg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
    const result = reg.test(mobile)
    if (!result) {
      // 提示手机号格式错误
      wx.utils.toast('手机号格式错误', 'error')
    }
    return result
  },
  // 验证验证码格式
  validCode(code) {
    const reg = /^\d{6}$/
    const result = reg.test(code)
    if (!result) {
      // 提示格式错误
      wx.utils.toast('验证码格式错误', 'error')
    }
    return result
  },
  /**
   * 获取验证码  显示倒计时
   */
  async getCode() {
    // 解构data里的数据
    const { mobile } = this.data
    // 调用两个验证方法
    if (!this.validMobile(mobile)) return

    // 格式正确，就发送验证码 => 传递手机号给后台=》后台发送验证给手机号
    let { data: { code } } = await wx.http.get('/code', {
      mobile
    })

    // 把获取的验证码显示到输入框=》强调：真实情况用户手机收到，自己输入
    this.setData({
      code
    })

    // 复制验证码到粘贴板
    // wx.setClipboardData({ data: code })
    // 显示计时器
    this.setData({
      isShow: true
    })
  },
  /**
   * 登录
   */
  async login() {
    // 解构data里的数据
    const { mobile, code } = this.data
    // 调用两个验证方法
    if (!this.validMobile(mobile)) return
    if (!this.validCode(code)) return

    // 调用登录接口
    let { data } = await wx.http.post('/login', {
      mobile,
      code
    })
    // 调用app.js的实例方法，存放token
    app.setToken(data.token)
    // 跳转
    // 如果有参数就跳转到参数位置，否则跳转到我的页面
    const url = this.redirectUrl || '/pages/my/index'
    // 根据mixin里定义的判断是否为tabbar页面的方法 选择重定向跳转还是tabbar跳转
    if (this.istabBar(url)) {
      wx.switchTab({
        url
      });
    } else {
      wx.redirectTo({
        url
      });
    }

  },
  /**
   *倒计时完事  显示获取验证码
   */
  countFinish() {
    this.setData({
      isShow: false
    })
  },
})
